<?php

class clasesModel extends CI_Model {
    public function obtenerPendientes(){
         $sql = "SELECT p.id as id, p.modalidad, a.nombre as alumno, p.fecha_pedido as fecha_pedido, m.materia as materia, nm.nivel as nivel "
                 . "FROM alumnos a, pedidos p, materias m, nivel_materias nm "
                 . "WHERE a.id = p.alumno AND p.materia = m.id AND m.nivel = nm.id AND p.estado = 0";

        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
     public function obtenerAsignadas($from, $to){
         $sql = "SELECT "
                 . "p.id as id, p.modalidad, a.nombre as alumno, p.fecha_pedido as fecha_pedido,p.fecha_asignada as fecha_asignada, m.materia as materia, nm.nivel as nivel, prof.nombre as profesor, a.barrio, a.partido "
                 . "FROM alumnos a, pedidos p, materias m, nivel_materias nm, profesores prof "
                 . "WHERE a.id = p.alumno AND p.materia = m.id AND m.nivel = nm.id AND p.profesor = prof.id AND p.estado = 1 AND p.profesor <> 35 AND p.profesor <> 36 order by fecha_asignada desc"
                 . " LIMIT $to OFFSET $from";
         
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
     public function obtenerCanceladas(){
         $sql = "SELECT "
                 . "p.id as id, p.modalidad, a.nombre as alumno, p.fecha_pedido as fecha_pedido,p.fecha_asignada as fecha_asignada, m.materia as materia, nm.nivel as nivel, prof.nombre as profesor, a.barrio, a.partido "
                 . "FROM alumnos a, pedidos p, materias m, nivel_materias nm, profesores prof "
                 . "WHERE a.id = p.alumno AND p.materia = m.id AND m.nivel = nm.id AND p.profesor = prof.id AND p.estado = 1  AND (p.profesor = 35 OR p.profesor = 36) order by fecha_asignada desc";
                
         
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function obtenerTotalAsignadas($userId = null){
        $sql = "SELECT  COUNT(1) as total FROM pedidos p WHERE p.estado = 1 AND p.profesor <> 35 AND p.profesor <> 36";
        if($userId != null){
            $sql .= " AND p.profesor = $userId";
        }
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function obtenerAsignadasAProfesor($profesorId,$from, $to){
         $sql = "SELECT p.id as id, p.modalidad, a.nombre as alumno, p.fecha_pedido as fecha_pedido,p.fecha_asignada as fecha_asignada, m.materia as materia, nm.nivel as nivel, prof.nombre as profesor, a.barrio, a.partido "
                 . "FROM alumnos a, pedidos p, materias m, nivel_materias nm, profesores prof "
                 . "WHERE a.id = p.alumno AND p.materia = m.id AND m.nivel = nm.id AND p.profesor = prof.id AND p.estado = 1"
                 . " AND prof.id = $profesorId "
                 . " ORDER BY fecha_asignada desc"
                 . " LIMIT $to OFFSET $from";
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function obtener($id){
          $sql = "SELECT p.id as id, p.modalidad, a.nombre as alumno, a.mail as mail, a.telefono as telefono, p.fecha_pedido as fecha_pedido, m.materia as materia, nm.nivel as nivel, "
                  . " (select nombre from barrios where id = a.barrio and a.barrio > 0) as barrio, "
                 . " (select partido from partidos where id = a.partido and a.partido > 0) as partido, a.barrio as barrioId, a.partido as partidoId, "
                  . " p.comentario as comentario "
                 . "FROM alumnos a, pedidos p, materias m, nivel_materias nm "
                 . "WHERE p.id = $id AND a.id = p.alumno AND p.materia = m.id AND m.nivel = nm.id";
    
        $query = $this->db->query($sql);
        $data = $query->result_array();

        return $data[0];
    }
    
    public function profesoresParaPedidoBarrio($id){
        $sql = "SELECT prof.id, prof.nombre, prof.telefono, prof.facebook, prof.mail, ((select count(1) from pedidos where profesor = prof.id) + prof.puntos_base) asignadas, "
                . "(select max(fecha_asignada) as ultima from pedidos p where profesor = prof.id) as ultima_asignada "  
                 . "FROM pedidos p, materias_profesores mp, profesores prof, alumnos a, profesor_barrio_ad pba "
                 . "WHERE p.id = $id AND mp.materia = p.materia AND prof.id = mp.profesor AND a.barrio = pba.barrio AND prof.id = pba.profesor and a.id = p.alumno "
                . " Order by ultima_asignada ";
        
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function profesoresParaPedidoPartido($id){
        $sql = "SELECT prof.id, prof.nombre, prof.telefono, prof.facebook, prof.mail, ((select count(1) from pedidos where profesor = prof.id) + prof.puntos_base) asignadas, "
                . "(select max(fecha_asignada) as ultima from pedidos p where profesor = prof.id) as ultima_asignada "                
                 . "FROM pedidos p, materias_profesores mp, profesores prof, alumnos a, profesor_partido_ad ppa "
                 . "WHERE p.id = $id AND mp.materia = p.materia AND prof.id = mp.profesor AND a.partido = ppa.partido AND prof.id = ppa.profesor "
                . " Order by ultima_asignada ";
        
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function profesoresParaPedidoEnSuDomicilio($id){
        $sql = "SELECT prof.id, prof.nombre, prof.telefono, prof.facebook, prof.mail, ((select count(1) from pedidos where profesor = prof.id) + prof.puntos_base) asignadas, "
                . "(select max(fecha_asignada) as ultima from pedidos p where profesor = prof.id) as ultima_asignada "  
                 . "FROM pedidos p, materias_profesores mp, profesores prof "
                 . "WHERE p.id = $id AND mp.materia = p.materia AND prof.id = mp.profesor "
                . " AND prof.enDomicilio = 1"
                . " Order by ultima_asignada ";
        
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function profesoresParaPedidoEnFacultad($id){
        $sql = "SELECT prof.id, prof.nombre, prof.telefono, prof.facebook, prof.mail, ((select count(1) from pedidos where profesor = prof.id) + prof.puntos_base) asignadas, "
                . "(select max(fecha_asignada) as ultima from pedidos p where profesor = prof.id) as ultima_asignada "  
                 . "FROM pedidos p, materias_profesores mp, profesores prof "
                 . "WHERE p.id = $id AND mp.materia = p.materia AND prof.id = mp.profesor "
                . " AND prof.enFacultad = 1"
                . " Order by ultima_asignada ";
        
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function asignarClase($pedidoId,$profId){
        $sql = "UPDATE pedidos SET profesor = $profId, fecha_asignada = NOW(), estado = 1
        WHERE id = $pedidoId";

        $this->db->query($sql);
        
        if($this->db->affected_rows() > 0){
            return 1;
        }else{
            return 0;
        }
    }
}
